چطوری میشه

25 بهترین قطعه ووکامرس من برای وردپرس

25 بهترین قطعه ووکامرس من برای وردپرس

زمان می‌گذرد… 6 ماه از شروع به کار برای WooThemes به عنوان تکنسین پشتیبانی تمام وقت WooCommerce می‌گذرد. در طی این 6 ماه چیزهای زیادی در ووکامرس یاد گرفتم و تعداد زیادی از قطعات مرتبط با ووکامرس را کدنویسی کردم (زیاد بخوانید!). در واقع، WooCommerce واقعا ابزار قدرتمندی است و به راحتی قابل گسترش است. دارای قلاب های زیادی است که تقریباً برای همه چیز قابل استفاده است و این چیزی است که WooCommerce را بسیار خوب می کند. در اینجا فهرستی از تکه‌هایی است که در ماه‌های گذشته نوشتم یا اقتباس کردم. همه این قطعه ها باید در فایل functions.php در پوشه تم شما جایگذاری شوند:

1 – نوع پرداخت را به ایمیل مدیریت WooCommerce اضافه کنید

add_action( 'woocommerce_email_after_order_table', 'add_payment_method_to_admin_new_order', 15, 2 );
 
تابع add_payment_method_to_admin_new_order ($order, $is_admin_email ) {
  if ($is_admin_email ) {
    echo '

روش پرداخت:' . $order->payment_method_title . '

'; } }

2 – محصولات را در هر صفحه / در هر خط به فروش می رساند

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
add_action('woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15);
 
if (! function_exists('woocommerce_output_upsells') ) {
	تابع woocommerce_output_upsells() {
	    woocommerce_upsell_display( 3,3 ); // نمایش 3 محصول در ردیف های 3 تایی
	}
}

3 – دسته‌های محصول را از صفحه فروشگاه حذف کنید

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

تابع custom_pre_get_posts_query($q) {
 
	if ( ! $q->is_main_query() ) return;
	if ( ! $q->is_post_type_archive() ) return;
	
	if (! is_admin() && is_shop() && ! is_user_logged_in() ) {
 
		$q->set('tax_query', array(array(
			'taxonomy' => 'product_cat',
			'field' => 'slug',
			'terms' => آرایه ('رنگ'، 'طعم'، 'ادویه'، 'وانیل')، // محصولات در این دسته بندی ها را در صفحه فروشگاه نمایش ندهید
			'operator' => 'در داخل نیست'
		))))
	
	}
 
	remove_action('pre_get_posts', 'custom_pre_get_posts_query' );
 
}

4 – هر رشته ای را سریع ترجمه کنید

add_filter('gettext', 'translate_text');
add_filter('ngettext', 'translate_text');
 
تابع translate_text($translated) {
     $translated = str_ireplace('Choose and option', 'Select', $translated);
     بازگشت $translated;
}

5 – یک دسته را از ویجت دسته WooCommerce حذف کنید

add_filter( 'woocommerce_product_categories_widget_args', 'woo_product_cat_widget_args' );

تابع woo_product_cat_widget_args($cat_args) {
	
	$cat_args['exclude'] = آرایه('16');
	
	بازگشت $cat_args;
}

6 – یک فیلد سفارشی به یک تنوع محصول اضافه کنید

//Display Fields
add_action('woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2);
//JS برای افزودن فیلدها برای تغییرات جدید
add_action('woocommerce_product_after_variable_attributes_js', 'variable_fields_js');
//ذخیره فیلدهای تنوع
add_action('woocommerce_process_product_meta_variable', 'variable_fields_process', 10, 1);

تابع variable_fields( $loop، $variation_data ) { ?>	
	
		
			

7 – به جای “Out of stock” با “Sold”

جایگزین کنید

add_filter('woocommerce_get_availability', 'availability_filter_func');

تابع availability_filter_func ($availability)
{
	$availability['availability'] = str_ireplace('در انبار موجود نیست'، 'فروخته شده'، $availability['availability']);
	بازگشت $availability;
}

8 – نمایش “محصول از قبل در سبد خرید” به جای دکمه “افزودن به سبد خرید”

/**
 * متن افزودن به سبد خرید را در صفحات تک محصول تغییر دهید
 */
add_filter('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );

تابع woo_custom_cart_button_text() {

	جهانی $woocommerce;
	
	foreach($woocommerce->cart->get_cart() به عنوان $cart_item_key => $values ​​) {
		$_product = $values['داده'];
	
		if( get_the_ID() == $_product->id ) {
			بازگشت __('از قبل در سبد خرید - افزودن دوباره؟', 'woocommerce');
		}
	}
	
	return __('افزودن به سبد خرید', 'woocommerce');
}

/**
 * متن افزودن به سبد خرید را در آرشیو محصولات تغییر دهید
 */
add_filter('add_to_cart_text', 'woo_archive_custom_cart_button_text' );

تابع woo_archive_custom_cart_button_text() {

	جهانی $woocommerce;
	
	foreach($woocommerce->cart->get_cart() به عنوان $cart_item_key => $values ​​) {
		$_product = $values['داده'];
	
		if( get_the_ID() == $_product->id ) {
			بازگشت __('قبلاً در سبد خرید', 'ووکامرس');
		}
	}
	
	return __('افزودن به سبد خرید', 'woocommerce');
}

9 – تعداد محصولات را در نمای دسته پنهان کنید

add_filter( 'woocommerce_subcategory_count_html', 'woo_remove_category_products_count' );

تابع woo_remove_category_products_count() {
	برگشت؛
}

10 – فیلدهای پرداخت حساب را الزامی کنید

add_filter( 'woocommerce_checkout_fields', 'woo_filter_account_checkout_fields' );
 
تابع woo_filter_account_checkout_fields($fields) {
	$fields['account']['account_username']['required'] = true;
	$fields['account']['account_password']['required'] = true;
	$fields['account']['account_password-2']['required'] = true;

	بازگشت $fields;
}

11 – تغییر نام برگه محصول

add_filter( 'woocommerce_product_tabs', 'woo_rename_tab', 98);
تابع woo_rename_tab ($tabs) {

 $tabs['description']['title'] = 'اطلاعات بیشتر';

 بازگشت $tabs;
}

12 – فهرست دسته‌های محصولات WooCommerce

$args = array(
    'number' => $number,
    'orderby' => $orderby،
    'order' => $order,
    'hide_empty' => $hide_empty،
    'include' => $ids
)

$product_categories = get_terms( 'product_cat', $args );

$count = count($product_categories);
 if ( $count > 0 ){
     پژواک "
    "; foreach ( $product_categories به عنوان $product_category ) { echo '
  • '. $product_category->name . '
  • '; } پژواک "
"; }

13 – عنوان صفحه فروشگاه را جایگزین کنید

add_filter('woocommerce_page_title', 'woo_shop_page_title');

تابع woo_shop_page_title ($page_title ) {
	
	if( 'خرید' == $page_title) {
		بازگشت "عنوان جدید من"؛
	}
}

14 – عنوان ویجت را تغییر دهید

/*
 * عنوان ویجت را تغییر دهید
 */
add_filter('widget_title', 'woo_widget_title', 10, 3);

تابع woo_widget_title ($title، $instance، $id_base) {
	
	if('onsale' == $id_base) {
		بازگشت "عنوان جدید من"؛
	}
}

15 – تنظیمات پیش‌فرض WooCommerce را حذف کنید

add_filter( 'woocommerce_catalog_settings', 'woo_remove_catalog_options' );

تابع woo_remove_catalog_options( $catalog ) {

	unset($catalog[23]); //برش صفرها (خیر) 
	unset($catalog[22]); //2 اعشار 
	unset($catalog[21]); //سپت اعشاری (.) 
	unset($catalog[20]); //هزار سپتامبر (،) 
	unset($catalog[19]); //موقعیت ارز (سمت چپ)	
	unset($catalog[18]); //موقعیت ارز (سمت چپ)	
	unset($catalog[5]); // ajax افزودن به سبد خرید (خیر)	
	
	بازگشت کاتالوگ $; 
}

16 – آدرس ایمیل «از» را تغییر دهید

function woo_custom_wp_mail_from() {
        جهانی $woocommerce;
        بازگشت html_entity_decode( 'your@email.com' );
}
add_filter('wp_mail_from', 'woo_custom_wp_mail_from', 99 );

17 – رمزگشایی از نام در ایمیل WooCommerce

function woo_custom_wp_mail_from_name() {
        جهانی $woocommerce;
        بازگشت html_entity_decode( get_option( 'woocommerce_email_from_name' ) );
}
add_filter('wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99 );

تابع woo_custom_wp_mail_from() {
        جهانی $woocommerce;
        بازگشت html_entity_decode( get_option( 'woocommerce_email_from' ) );
}
add_filter('wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99);

18 – شناسه محصولات ویژه را برگردانید

function woo_get_featured_product_ids() {
	// بارگیری از کش
	$featured_product_ids = get_transient( 'wc_featured_products' );

	// کش معتبر پیدا شد
	اگر ( نادرست !== $featured_product_ids )
		$featured_product_ids را برگردانید.

	$featured = get_posts( آرایه(
		'post_type' => آرایه ('product', 'product_variation')
		'posts_per_page' => -1،
		'post_status' => 'انتشار'،
		'meta_query' => آرایه(
			آرایه(
				'key' => '_visibility',
				'value' => آرایه ('کاتالوگ'، 'قابل مشاهده'),
				'مقایسه' => 'در'
			)
			آرایه(
				'key' => '_featured',
				'value' => 'بله'
			)
		)
		'fields' => 'id=>والد'
	)))

	$product_ids = array_keys( $featured );
	$parent_ids = array_values ​​( $featured );
	$featured_product_ids = array_unique( array_merge( $product_ids, $parent_ids ) );

	set_transient('wc_featured_products', $featured_product_ids );

	$featured_product_ids را برگردانید.
}

19 – افزودن فیلد سفارشی برای ویرایش صفحه آدرس

// افزودن فیلدها برای ویرایش صفحه آدرس
تابع woo_add_edit_address_fields($fields) {

	$new_fields = آرایه(
				'date_of_birth' => آرایه(
				'label' => __( 'تاریخ تولد'، 'woocommerce')،
				'لازم' => نادرست،
				'class' => آرایه ('form-row' ),
			)
		)
		
	$fields = array_merge( $fields, $new_fields );
	
    بازگشت $fields;
	
}

add_filter('woocommerce_default_address_fields', 'woo_add_edit_address_fields');

20 – نمایش کد کوتاه کاتالوگ محصولات onsale

function woocommerce_sale_products( $atts ) {

    جهانی $woocommerce_loop;

    استخراج(shortcode_atts(array(
        'per_page' => '12'،
        'columns' => '4',
        'orderby' => 'تاریخ',
        'order' => 'نزولی'
    )، $atts))؛

    $woocommerce_loop['columns'] = $columns;

    $args = آرایه(
        'post_type' => 'محصول'،
        'post_status' => 'انتشار'،
        'ignore_sticky_posts' => 1،
        'posts_per_page' => $per_page،
        'orderby' => $orderby،
        'order' => $order,
        'meta_query' => آرایه(
            آرایه(
                'key' => '_visibility',
                'value' => آرایه ('کاتالوگ'، 'قابل مشاهده'),
                'مقایسه' => 'در'
            )
            آرایه(
                'key' => '_sale_price',
                'value' => 0,
                'مقایسه' => '>',
                'type' => 'NUMERIC'
            )
        )
    )
    query_posts ($args);
    ob_start();
    woocommerce_get_template_part('loop', 'shop' );
    wp_reset_query();

    بازگشت ob_get_clean();
}

add_shortcode('sale_products', 'woocommerce_sale_products');

21 – محصولات فروش اولیه داشته باشید

function woo_have_onsale_products() {
	
	جهانی $woocommerce;

	// محصولات را در فروش دریافت کنید
	$product_ids_on_sale = array_filter( woocommerce_get_product_ids_on_sale() );

	if( !empty( $product_ids_on_sale ) ) {
		بازگشت درست؛
	}دیگر {
		بازگشت نادرست؛
	}
	
}

// مثال:
if( woo_have_onsale_products() ) {
	echo 'محصولات فروش دارند';
}دیگر {
	پژواک "محصول بدون فروش"؛
}

22 – حداقل مقدار سفارش را تنظیم کنید

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
تابع wc_minimum_order_amount() {
	جهانی $woocommerce;
	حداقل $ = 50;
	if ( $woocommerce->cart->get_cart_total(); < $minimum ) {
           $woocommerce->add_error( sprintf( 'برای ثبت سفارش باید یک سفارش با حداقل %s داشته باشید.' , $minimum ) );
	}
}

23 – سفارش براساس قیمت، تاریخ یا عنوان در صفحه فروشگاه

add_filter('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');
 
تابع custom_default_catalog_orderby() {
     بازگشت 'تاریخ'؛ // همچنین می توانید از عنوان و قیمت استفاده کنید
}

24 – دکمه افزودن به سبد خرید را به صفحه تسویه‌حساب هدایت کنید

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

تابع redirect_to_checkout() {
    جهانی $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    بازگشت $checkout_url;
}

25 – پس از تکمیل سفارش، گیرنده ایمیل را اضافه کنید

function woo_extra_email_recipient($recipient, $object) {
    $recipient = $recipient . ', your@email.com';
    بازگشت $recipient;
}
add_filter('woocommerce_email_recipient_customer_completed_order', 'woo_extra_email_recipient', 10, 2);

و… همین! امیدوارم این قطعه‌ها مفید واقع شوند، همه آنها آزمایش شده‌اند و همه آنها خوب کار می‌کنند، اما اگر با مشکلی مواجه شدید، لطفاً بخش نظرات را به من اطلاع دهید. خوش بگذره! 😉

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا